<?php

class User_AuthController extends Zend_Controller_Action
{

    public function init()
    {
        
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function registerAction()
    {
        
        $options = array(
        		'layout'=>'signup',
        		'layoutPath'=>LAYOUT_PATH."/auth"
        );
        Zend_Layout::startMvc($options);
        // action body
        $func = new Application_Model_Functions();
        if($this->_request->isPost()){
            $mUser = new Application_Model_User();
            $result = array();
            $error = array();
            
            $username = strip_tags(trim($this->_request->getPost('username')));
            if(empty($username)){
                $error['username'] = 'Tên đăng nhập không được rỗng'; 
            }else{
               if($mUser->checkExistUsername($username)) $error['username'] = "Tên đăng nhập đã có người dùng"; 
            }
            $email = strip_tags(trim($this->_request->getPost('email')));
            if(empty($email)){
            	$error['email'] = 'Email không được rỗng';
            }else{
            	if($mUser->checkExistEmail($email)) $error['email'] = "Email đã có người dùng";
            }
            
            $password = strip_tags(trim($this->_request->getPost('password')));
            if(empty($password)){
            	$error['password'] = 'Mật khẩu không được rỗng';
            }
            
            $repassword = strip_tags(trim($this->_request->getPost('repassword')));
            if(empty($repassword)){
            	$error['repassword'] = 'Nhập lại mật khẩu không được rỗng';
            }
            else if(!empty($password) && $password != $repassword) 
            {
                $error['repassword'] = 'Mật khẩu và nhập lại mật khẩu không đúng';
            }
            
            $fullname = strip_tags(trim($this->_request->getPost('fullname')));
            if(empty($fullname)){
            	$error['fullname'] = 'Họ tên không được rỗng';
            }
            if(empty($error)){
                
                $mUser->user_name = $username;
                $mUser->user_email = $email;
                $mUser->user_pass = $password;
                $mUser->display_name = $fullname;
                $mUser->user_registered = date('Y-m-d H:i:s');
                $mUser->user_salt = $func->generateRandomString();
                $activation_key = md5($func->generateRandomString());
                $mUser->user_activation_key = $activation_key;
                
                if($mUser->insertUser()){
                    $body = "<p>Chào <b>".$username."</b>,</p>";
                    $body .="<p>Bạn đã đăng ký thành công tài khoản với tên đăng nhập là:  <b>".$username."</b></p>";
                    $body .="<p>Bạn hãy click vào link phía dưới để tiến hành xác nhận địa chỉ email này của bạn:</p>";
                    $body .="<a href='"._BASE_URL."/user/auth/active?email=".$email."&key=".$activation_key."&type=default'>KÍCH HOẠT TÀI KHOẢN</a>";
                    $body .="<p>---------------------------</p><p><b>KidPlay Team</b></p>";
                    
                    $func->send_mail($email, 'Thông báo - Đăng ký thành viên Kidplay', $body);
                    $result['status'] = 'Success';
                    $result['error'] = 'khong co loi';
                }
            }else{
                $result['status'] = 'Error';
                $result['error'] = $error;
            }
            
            die(json_encode($result));
        }
    }

    public function activeAction()
    {
        $options = array(
        		'layout'=>'active',
        		'layoutPath'=>LAYOUT_PATH."/auth"
        );
        Zend_Layout::startMvc($options);
        
        $email = trim(strip_tags($this->_request->getParam('email')));
        $key = trim(strip_tags($this->_request->getParam('key')));
        $type = trim(strip_tags($this->_request->getParam('type')));
        $result = '';
        if($email && $key && $type){
            $mUser = new Application_Model_User();
            $re = $mUser->checkActive($email, $key);
            if($re){
                $mUser->active($email);
                if($type=='default'){
                    $result="<div class='success'>";
                    $result.="<p>Thành công! Bạn đã kích hoạt thành công tài khoản: <b>".$re['user_name']."</b></p>";
                    $result.="<p>Chào mừng <b>".$re['user_name']."</b> đến với KidPlay.Vn. Bạn có thể đăng nhập ngay bây giờ.</p>";
                    $result.="</div>";
                }else{
                    $result="<div class='success'>";
                    $result.="<p>Thành công! Bạn đã kích hoạt thành công tài khoản: <b>".$re['user_name']."</b></p>";
                    $result.="<p>Chào mừng <b>".$re['user_name']."</b> đến với KidPlay.Vn. Tài khoản Nhà phát triển của bạn đã được tạo, chúng tôi sẽ xác nhận thông tin trước khi bạn có thể đăng những úng dụng củng mình lên hệ thống. Chúng tôi cố gắng sẽ phản hồi sớm tới bạn.</p>";
                    $result.="<p>Xin cảm ơn!</p>";
                    $result.="</div>";
                }
            }else{
                $result="<div class='error'>";
                $result.="<p><b>Có lỗi xảy ra!</b> Quá trình kích hoạt tài khoản đã không thành công!</p>";
                $result.="<p>Có thể tài khoản của bạn đã quá 7 ngày sau khi đăng ký mà không kích hoạt hoặc tài khoản của bạn đã được kích hoạt rồi.</p>";
                $result.="<p>Bạn hãy liên hệ tới <b>support@kibplay.vn</b> để được trợ giúp.</p>";
                $result.="</div>";
            }
            
        }else {
            $result = '<div class="error">Trang này hiện không có!</div>';
        }
        
        $this->view->result = $result;
        
    }

    public function loginAction()
    {
        $options = array(
        		'layout'=>'login',
        		'layoutPath'=>LAYOUT_PATH."/auth"
        );
        Zend_Layout::startMvc($options);
        
        $auth = Zend_Auth::getInstance();
        $auth->setStorage(new Zend_Auth_Storage_Session('default'));
        if ($auth->hasIdentity()) {
        	$this->_helper->redirector->gotoUrl(_BASE_URL);
        }
        //$this->view->headTitle('Đăng nhập - '._home_title);
        $mUser = new Application_Model_User();
        
        if($this->_request->isPost()){
        	$errorSignin = array();
        	$account = trim(strip_tags($this->_request->getPost('username')));
        	$password = trim(strip_tags($this->_request->getPost('password')));
        	
        	if($account==''){$errorSignin[]='Bạn chưa nhập Email hoặc Tên tài khoản';}
        	if($password==''){$errorSignin[]='Bạn chưa nhập mật khẩu';}
        	
        	if(empty($errorSignin))
        	{
        		$user=null;
        		if(filter_var($account, FILTER_VALIDATE_EMAIL))
        		{
        			$mUser->user_email = $account;
        			$user = $mUser->getUserByEmail();
        		}else {
        			$mUser->user_name = $account;
        			$user = $mUser->getUserByUsername();
        		}
        		 
        		//var_dump($user);die;
        		if (!empty($user)){
        		    if($user['user_status']==0){
        		        $errorSignin[]="Tài khoản của bạn chưa được kích hoạt. Vui lòng kiểm tra lại mail hoặc liên hệ <b>suport@kidplay.vn</b> để được hổ trợ.";
        		    }else{
        		        $password=$password.$user['user_salt'];
        		    }
        		}
        		else{
        			$errorSignin[]='Tài khoản đăng nhập không hợp lệ hoặc mật khẩu không đúng';
        		}
        	}
        	if(empty($errorSignin))
        	{
        		if($mUser->login($account,$password)){
        			//$this->_redirect('default');
        			$this->_helper->redirector->gotoUrl(_BASE_URL);
        
        		}
        		else {
        			$errorSignin[]='Tài khoản đăng nhập không hợp lệ hoặc mật khẩu không đúng';
        		}
        	}
        	 
        	$this->view->error = $errorSignin;
        }
    }
    public function logoutAction()
    {
        $this->_helper->layout()->disableLayout();
    	$this->_helper->viewRenderer->setNoRender(true);
    	$auth = Zend_Auth::getInstance();
    	$auth->setStorage(new Zend_Auth_Storage_Session('default'));
    	//var_dump($auth->getIdentity());
    	$auth->clearIdentity();
    	session_start();
    	session_unset();
    	session_destroy();
    	$this->_helper->redirector->gotoUrl(_BASE_URL);
    }
    public function loginfbAction()
    {
    
    	//$this->_helper->layout()->disableLayout();
    	$this->_helper->viewRenderer->setNoRender(true);
    	$facebook = new My_Facebook();
    	$fbuser = $facebook->getUser();
    	$user_profile = $facebook->user_profile();
    	if (isset($_GET['ref'])) {
    
    		$_SESSION['ref'] = $_GET['ref'];
    	}else{
    		if(!isset($_SESSION['ref']) || $_SESSION['ref']==''){
    			$_SESSION['ref'] = _BASE_URL;
    		}
    	}
    	if ($user_profile) {
    	    //var_dump($user_profile);
    		$auth = Zend_Auth::getInstance();
    		$auth->setStorage(new Zend_Auth_Storage_Session('default'));
    		
    		$mUser = new Application_Model_User();
    		$func = new Application_Model_Functions();
    		$mUser->user_email = $user_profile['email'];
    		$check = $mUser->getUserByEnailNoPass();
    		if($check){
    			$auth->getStorage()->write((object)$check);
    			//$mUser->updateLastlogin($check['userid']);
    			$this->_helper->redirector->gotoUrl($_SESSION['ref']);
    		}else {
    		    $mUser->user_name = $user_profile['email'];;
    		    $mUser->user_email = $user_profile['email'];
    		    $mUser->user_pass = 'p123';
    		    $mUser->display_name = $user_profile['name'];
    		    $mUser->user_registered = date('Y-m-d H:i:s');
    		    $mUser->user_salt = $func->generateRandomString();
    		    $activation_key = md5($func->generateRandomString());
    		    $mUser->user_activation_key = $activation_key;
    		    $mUser->user_status = 1;
    			
    			$mUser->insertUser();
    			$auth->getStorage()->write((object)$mUser->getUserByEnailNoPass());
    			//var_dump($user_profile);
    			//var_dump($mUser);die;
    			$this->_helper->redirector->gotoUrl($_SESSION['ref']);
    		    
    		}
            
    
    	}else {
    
    	}
    }
    public function loginggAction()
    {
    	$this->_helper->layout()->disableLayout();
    	$this->_helper->viewRenderer->setNoRender(true);
    	$auth = Zend_Auth::getInstance ();
    	$auth->setStorage(new Zend_Auth_Storage_Session('default'));
    	$google = new My_Google();
    	$client = new Google_Client();
    	$client->setApplicationName("KidPlay.vn Signin");
    	$client->setAccessType("online");
    	$client->setApprovalPrompt("auto");
    	$client->setClientId('764295580502-3n73a2m7jb35nobv6tvf5akie7gk2a0f.apps.googleusercontent.com'); // paste the client id which you get from google API Console
    	$client->setClientSecret('7UxfzEaHDR0TcK3K_GyN7DoG'); // set the client secret
    	$client->setRedirectUri(_BASE_URL.'/login/google');
    	$client->setDeveloperKey('AIzaSyB99oQxWIZC1SKvF8cvS0_3XiJpCI8hTpg'); // Developer key
    	$this->client = $client;
    	$oauth2 = new Google_Oauth2Service($client);
    	if (isset($_GET['ref'])) {
    
    		$_SESSION['ref'] = $_GET['ref'];
    	}else{
    		if(!isset($_SESSION['ref']) || $_SESSION['ref']==''){
    			$_SESSION['ref'] = _BASE_URL;
    		}
    	}
    
    	if (isset($_GET['code'])) {
    		$client->authenticate($_GET['code']);
    		$_SESSION['token'] = $client->getAccessToken();
    		$user_profile = $oauth2->userinfo->get();
    		//var_dump($user_profile);die;
    		$this->AddUserGG($user_profile);
    		//$redirect = $_SESSION['ref'];//'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    		//header('Location: '.$redirect);
    		return;
    	}
    
    
    	if (isset($_SESSION['token'])) {
    		$client->setAccessToken($_SESSION['token']);
    	}
    
    	if (isset($_REQUEST['logout'])) {
    		unset($_SESSION['token']);
    		$client->revokeToken();
    	}
    
    	if ($client->getAccessToken()) {
    
    		$user_profile = $oauth2->userinfo->get();
    	    $this->AddUserGG($user_profile);
    		//var_dump($user_profile);die;
    
    		// The access token may have been updated lazily.
    		$_SESSION['token'] = $client->getAccessToken();
    	} else {
    		$authUrl = $client->createAuthUrl();
    		header("location: " . $authUrl);
    	}
    }
    function AddUserGG($user_profile)
    {
    	$auth = Zend_Auth::getInstance ();
    	$auth->setStorage(new Zend_Auth_Storage_Session('default'));
    	$mUser = new Application_Model_User();
    	$mUser->user_email = $user_profile['email'];
    	$func = new Application_Model_Functions();
    	//var_dump($mUser);die;
    	$check = $mUser->getUserByEnailNoPass();
    	if($check){
    		$auth->getStorage()->write((object)$check);
    		//$mUser->updateLastlogin($check['userid']);
    		$this->_helper->redirector->gotoUrl($_SESSION['ref']);
    	}else {
    	    $mUser->user_name = $user_profile['email'];;
    	    $mUser->user_email = $user_profile['email'];
    	    $mUser->user_pass = 'p123';
    	    $mUser->display_name = $user_profile['name'];
    	    $mUser->user_registered = date('Y-m-d H:i:s');
    	    $mUser->user_salt = $func->generateRandomString();
    	    $activation_key = md5($func->generateRandomString());
    	    $mUser->user_activation_key = $activation_key;
    	    $mUser->user_status = 1;
    	     
    	    $mUser->insertUser();
    	    
    		$auth->getStorage()->write((object)$mUser->getUserByEnailNoPass());
    		//var_dump($user_profile);
    		//var_dump($mUser);die;
    		echo $_SESSION['ref'];
    		$this->_helper->redirector->gotoUrl($_SESSION['ref']);
    	}
    }

}







